package com.wcs.exam.dao;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wcs.exam.dao.po.ExamPaperCiteCountPO;
import com.wcs.exam.dao.impl.mapper.entity.Exam;

import java.util.Collection;
import java.util.List;

/**
 * 考试 持久化接口
 *
 * @author wcs
 * @since 2025-03-13
 */
public interface ExamDao extends IService<Exam> {

    /**
     * 根据条件分组统计
     *
     * @param wrapper   统计条件
     * @param classType 返回类型
     * @param <R>       统计结果类型
     * @return 统计结果
     */
    <R> List<R> selectObjs(Wrapper<Exam> wrapper, Class<R> classType);

    /**
    * 获取最大排序
    *
    * @return 最大排序
    */
    Integer getMaxSort();

    /**
     * 根据主键ID获取考试
     *
     * @param id 主键ID
     * @return 考试
     */
    Exam getByIdForCache(Long id);

    /**
     * 获取试卷被引用次数
     *
     * @param paperIds 试卷ID
     * @return 试卷被引用次数
     */
    List<ExamPaperCiteCountPO> paperCiteCount(Collection<Long> paperIds);

}
